其他
利用Xposed对ollvm后的so中flag爆破
本文为看雪论坛文章
看雪论坛作者ID:PTRer
本文为看雪安卓高研2w班(7月班)优秀学员作品。
下面先让我们来看看学员的学习心得吧!
题目要求:
请编写Xposed插件完对该app的flag的暴破(已知so中test函数参数为一个字符串,该字符串长度为3且仅包含大小写字母)。
解题思路:
首先分析ollvm控制流混淆的so找到关键函数,然后分析Android8.1源码加载so的函数并编写Xposed插件hook之,最后基于sandhook框架编写爆破so。
考察知识点:
ollvm控制流混淆代码的分析方法,以及利用Xposed对so中函数的主动调用。
ps. 题目附件请点击“阅读原文”下载。
解题过程
1.分析ollvm控制流混淆的so找到关键函数
首先利用Jadx软件打开apk,核心代码如下,将用户输入字符串作为参数调用jni函数jnitest进行判断。
jnitest函数会先调用下图line98行的sub_103C0函数,将sub_103C0转换后的字符串地址作为参数调用test函数,test的返回结果为非0,则jnitest的结果也为非0。
另外针对ollvm控制流混淆分析还有一个小技巧,就是从后往前分析,会更快找到关键函数。
我们需要在APK调用加载so时进行hook,所以我们hook住System类的loadLibrary就行。因为我手机是Pixel+Android8.1+Edxposed,所以查看Android8.1源码,如下所示,由于这个函数内部会修改classloader,所以我们去hook这两个函数的内部调用的Runtime类中的loadLibrary0函数。这里需要注意不同Android版本,调用的Runtime类中的函数名和参数顺序是不同的。
我们选择sandhook框架,理由是它可以hook住arm32或者arm64下的so中函数。首先我们在IDA中查找下test函数的偏移地址如下,为0XF9A0。
最后将生成的so文件拷贝到pixel手机/data/data/com.kanxue.test2/files路径下,并关闭selinux进行爆破,最终得到flag为“XuE”。
看雪ID:PTRer
https://bbs.pediy.com/user-home-874618.htm
*本文由看雪论坛 PTRer 原创,转载请注明来自看雪社区。
好消息!!现在看雪《安卓高级研修班》线下班 & 网课(12月班)开始同步招生啦!以前没报上高研班的小伙伴赶快抓紧机会报名,升职加薪唾手可得!!
推荐文章++++
公众号ID:ikanxue
官方微博:看雪安全商务合作:wsc@kanxue.com
求分享
求点赞
求在看